package com.love.travel.domain;

import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.love.common.core.annotation.Excel;
import com.love.common.core.web.domain.BaseEntity;

/**
 * 旅游产品对象 travel_product
 * 
 * @author love
 * @date 2025-10-22
 */
public class TravelProduct extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 产品ID */
    private Long productId;

    /** 产品名称 */
    @Excel(name = "产品名称")
    private String productName;

    /** 产品编码（唯一） */
    @Excel(name = "产品编码", readConverterExp = "唯=一")
    private String productCode;

    /** 产品类型：1-跟团游 2-自由行 3-定制游 4-半自助游 */
    @Excel(name = "产品类型：1-跟团游 2-自由行 3-定制游 4-半自助游")
    private Long productType;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String departureRegionName;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String destinationRegionName;

    /** 供应商ID */
    @Excel(name = "供应商ID")
    private Long vendorId;

    /** 供应商名称 */
    @Excel(name = "供应商名称")
    private String vendorName;

    /** 产品详情描述 */
    @Excel(name = "产品详情描述")
    private String description;

    /** 产品亮点（用逗号分隔） */
    @Excel(name = "产品亮点", readConverterExp = "用=逗号分隔")
    private String highlight;

    /** 图片URL集合（用逗号分隔） */
    @Excel(name = "图片URL集合", readConverterExp = "用=逗号分隔")
    private String imageUrls;

    /** 成人价（单位：元） */
    @Excel(name = "成人价", readConverterExp = "单=位：元")
    private BigDecimal adultPrice;

    /** 儿童价（单位：元） */
    @Excel(name = "儿童价", readConverterExp = "单=位：元")
    private BigDecimal childPrice;

    /** 婴儿价（单位：元） */
    @Excel(name = "婴儿价", readConverterExp = "单=位：元")
    private BigDecimal infantPrice;

    /** 行程天数 */
    @Excel(name = "行程天数")
    private Long travelDays;

    /** 行程晚数 */
    @Excel(name = "行程晚数")
    private Long travelNights;

    /** 服务标准 */
    @Excel(name = "服务标准")
    private String serviceStandard;

    /** 预订须知 */
    @Excel(name = "预订须知")
    private String bookingNotice;

    /** 退改政策 */
    @Excel(name = "退改政策")
    private String refundPolicy;

    /** 最低成团人数 */
    @Excel(name = "最低成团人数")
    private Long minPeople;

    /** 最大成团人数 */
    @Excel(name = "最大成团人数")
    private Long maxPeople;

    /** 是否热门产品：0-否 1-是 */
    @Excel(name = "是否热门产品：0-否 1-是")
    private Long isHot;

    /** 是否上架：0-下架 1-上架 */
    @Excel(name = "是否上架：0-下架 1-上架")
    private Long isActive;

    /** 销售数量 */
    @Excel(name = "销售数量")
    private Long salesCount;

    /** 评价数量 */
    @Excel(name = "评价数量")
    private Long commentCount;

    /** 平均评分（0-5分） */
    @Excel(name = "平均评分", readConverterExp = "0=-5分")
    private BigDecimal averageScore;

    /**
     * 标签ID集合
     */
    private Long[] tagIds;

    public void setProductId(Long productId) 
    {
        this.productId = productId;
    }

    public Long getProductId() 
    {
        return productId;
    }

    public void setProductName(String productName) 
    {
        this.productName = productName;
    }

    public String getProductName() 
    {
        return productName;
    }

    public void setProductCode(String productCode) 
    {
        this.productCode = productCode;
    }

    public String getProductCode() 
    {
        return productCode;
    }

    public void setProductType(Long productType) 
    {
        this.productType = productType;
    }

    public Long getProductType() 
    {
        return productType;
    }

    public String getDepartureRegionName() {
        return departureRegionName;
    }

    public void setDepartureRegionName(String departureRegionName) {
        this.departureRegionName = departureRegionName;
    }

    public String getDestinationRegionName() {
        return destinationRegionName;
    }

    public void setDestinationRegionName(String destinationRegionName) {
        this.destinationRegionName = destinationRegionName;
    }

    public void setVendorId(Long vendorId)
    {
        this.vendorId = vendorId;
    }

    public Long getVendorId() 
    {
        return vendorId;
    }

    public void setVendorName(String vendorName) 
    {
        this.vendorName = vendorName;
    }

    public String getVendorName() 
    {
        return vendorName;
    }

    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }

    public void setHighlight(String highlight) 
    {
        this.highlight = highlight;
    }

    public String getHighlight() 
    {
        return highlight;
    }

    public void setImageUrls(String imageUrls) 
    {
        this.imageUrls = imageUrls;
    }

    public String getImageUrls() 
    {
        return imageUrls;
    }

    public void setAdultPrice(BigDecimal adultPrice) 
    {
        this.adultPrice = adultPrice;
    }

    public BigDecimal getAdultPrice() 
    {
        return adultPrice;
    }

    public void setChildPrice(BigDecimal childPrice) 
    {
        this.childPrice = childPrice;
    }

    public BigDecimal getChildPrice() 
    {
        return childPrice;
    }

    public void setInfantPrice(BigDecimal infantPrice) 
    {
        this.infantPrice = infantPrice;
    }

    public BigDecimal getInfantPrice() 
    {
        return infantPrice;
    }

    public void setTravelDays(Long travelDays) 
    {
        this.travelDays = travelDays;
    }

    public Long getTravelDays() 
    {
        return travelDays;
    }

    public void setTravelNights(Long travelNights) 
    {
        this.travelNights = travelNights;
    }

    public Long getTravelNights() 
    {
        return travelNights;
    }

    public void setServiceStandard(String serviceStandard) 
    {
        this.serviceStandard = serviceStandard;
    }

    public String getServiceStandard() 
    {
        return serviceStandard;
    }

    public void setBookingNotice(String bookingNotice) 
    {
        this.bookingNotice = bookingNotice;
    }

    public String getBookingNotice() 
    {
        return bookingNotice;
    }

    public void setRefundPolicy(String refundPolicy) 
    {
        this.refundPolicy = refundPolicy;
    }

    public String getRefundPolicy() 
    {
        return refundPolicy;
    }

    public void setMinPeople(Long minPeople) 
    {
        this.minPeople = minPeople;
    }

    public Long getMinPeople() 
    {
        return minPeople;
    }

    public void setMaxPeople(Long maxPeople) 
    {
        this.maxPeople = maxPeople;
    }

    public Long getMaxPeople() 
    {
        return maxPeople;
    }

    public void setIsHot(Long isHot) 
    {
        this.isHot = isHot;
    }

    public Long getIsHot() 
    {
        return isHot;
    }

    public void setIsActive(Long isActive) 
    {
        this.isActive = isActive;
    }

    public Long getIsActive() 
    {
        return isActive;
    }

    public void setSalesCount(Long salesCount) 
    {
        this.salesCount = salesCount;
    }

    public Long getSalesCount() 
    {
        return salesCount;
    }

    public void setCommentCount(Long commentCount) 
    {
        this.commentCount = commentCount;
    }

    public Long getCommentCount() 
    {
        return commentCount;
    }

    public void setAverageScore(BigDecimal averageScore) 
    {
        this.averageScore = averageScore;
    }

    public BigDecimal getAverageScore() 
    {
        return averageScore;
    }

    public Long[] getTagIds() {
        return tagIds;
    }

    public void setTagIds(Long[] tagIds) {
        this.tagIds = tagIds;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("productId", getProductId())
            .append("productName", getProductName())
            .append("productCode", getProductCode())
            .append("productType", getProductType())
            .append("departureRegionId", getDepartureRegionName())
            .append("destinationRegionId", getDestinationRegionName())
            .append("vendorId", getVendorId())
            .append("vendorName", getVendorName())
            .append("description", getDescription())
            .append("highlight", getHighlight())
            .append("imageUrls", getImageUrls())
            .append("adultPrice", getAdultPrice())
            .append("childPrice", getChildPrice())
            .append("infantPrice", getInfantPrice())
            .append("travelDays", getTravelDays())
            .append("travelNights", getTravelNights())
            .append("serviceStandard", getServiceStandard())
            .append("bookingNotice", getBookingNotice())
            .append("refundPolicy", getRefundPolicy())
            .append("minPeople", getMinPeople())
            .append("maxPeople", getMaxPeople())
            .append("isHot", getIsHot())
            .append("isActive", getIsActive())
            .append("salesCount", getSalesCount())
            .append("commentCount", getCommentCount())
            .append("averageScore", getAverageScore())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
